package Leetcode第一期;

import java.util.HashSet;
import java.util.Iterator;
import java.util.Set;

/**
 * @author : K k
 * @date : 10:38 2020/9/15
 * 一个整型数组 nums 里除两个数字之外，其他数字都出现了两次。请写程序找出这两个只出现一次的数字。要求时间复杂度是O(n)，空间复杂度是O(1)。
 *
 *  
 *
 * 示例 1：
 *
 * 输入：nums = [4,1,4,6]
 * 输出：[1,6] 或 [6,1]
 * 示例 2：
 *
 * 输入：nums = [1,2,10,4,1,4,3,3]
 * 输出：[2,10] 或 [10,2]
 */
public class 数组中数字出现的次数_56_I {

    public int[] singleNumbers(int[] nums) {
        Set<Integer> set=new HashSet<>();
        for (int i=0;i<nums.length;i++){
            if (set.contains(nums[i])){
                set.remove(nums[i]);
            }else {
                set.add(nums[i]);
            }
        }
        int[] res=new int[set.size()];
        int i=0;
        Iterator<Integer> iterator = set.iterator();
        while (iterator.hasNext()){
            res[i++]=iterator.next();
        }
        return res;
    }

}
